// 注入拦截器脚本
async function injectInterceptor() {
    try {
        // 通过background script获取标签页信息
        const tabInfo = await chrome.runtime.sendMessage({ type: 'GET_TAB_INFO' });
        
        if (!tabInfo || !tabInfo.id) {
            throw new Error('Failed to get tab info');
        }
        
        // 创建一个全局变量来存储标签页信息
        const infoScript = document.createElement('script');
        infoScript.src = chrome.runtime.getURL('js/tab-info.js');
        infoScript.onload = () => {
            // 通过postMessage传递标签页信息
            window.postMessage({
                type: 'SET_TAB_INFO',
                data: {
                    id: tabInfo.id,
                    title: tabInfo.title || document.title || 'Unknown Tab',
                    url: tabInfo.url || window.location.href
                }
            }, '*');
            infoScript.remove();
        };
        (document.head || document.documentElement).appendChild(infoScript);

        // 注入拦截器脚本
        const script = document.createElement('script');
        script.src = chrome.runtime.getURL('js/xhr-interceptor.js');
        (document.head || document.documentElement).appendChild(script);
        script.onload = () => script.remove();
    } catch (error) {
        console.error('Error injecting interceptor:', error);
        // 如果注入失败，1秒后重试
        setTimeout(injectInterceptor, 1000);
    }
}

// 监听来自拦截器的消息
function setupMessageListener() {
    window.addEventListener('message', async function(event) {
        // 只处理来自同源的消息
        if (event.source !== window) return;
        
        // 只处理 XHR 拦截器的数据
        if (event.data.type !== 'XHR_INTERCEPTOR_DATA') return;

        try {
            // 获取当前存储的请求列表
            const { ajaxRequests = [] } = await chrome.storage.local.get(['ajaxRequests']);
            
            // 添加新请求到列表开头
            ajaxRequests.unshift(event.data.data);
            
            // 限制存储的请求数量（例如只保留最近100条）
            const maxRequests = 100;
            if (ajaxRequests.length > maxRequests) {
                ajaxRequests.length = maxRequests;
            }
            
            // 保存更新后的列表
            await chrome.storage.local.set({ ajaxRequests });
        } catch (error) {
            // 如果是扩展上下文失效的错误，尝试重新注入
            if (error.message.includes('Extension context invalidated')) {
                console.log('Extension context invalidated, reloading...');
                // 清除现有的事件监听器
                window.removeEventListener('message', arguments.callee);
                // 重新设置
                setTimeout(() => {
                    injectInterceptor();
                    setupMessageListener();
                }, 1000);
            } else {
                console.error('Error processing XHR data:', error);
            }
        }
    });
}

// 初始化
function initialize() {
    try {
        injectInterceptor();
        setupMessageListener();
    } catch (error) {
        console.error('Error initializing content script:', error);
        // 如果初始化失败，1秒后重试
        setTimeout(initialize, 1000);
    }
}

// 启动
initialize();